﻿#define _CRT_SECURE_NO_WARNINGS 1
//左移操作符
//#include <stdio.h>
//int main()
//{
//	int n = 10;
//	//10
//	//00000000 00000000 00000000 00001010 =10
//	int num = n << 1;
//	//0000000 00000000 00000000 000010100 = 20
//	printf("%d\n", n);
//	printf("%d", num);
//	return 0;
//}
//右移操作符
//#include <stdio.h>
//int main()
//{
//	int n = 10;
//	//00000000 00000000 00000000 00001010 = 10
//	int num = n >> 1;
//	//000000000 00000000 00000000 0000101 = 5
//	printf("%d\n", n);
//	printf("%d", num);
//	return 0;
//}

// &  |  ^  ~
//#include <stdio.h>
//int main()
//{
//	int n = -3;
//	int num = 5;
//	printf("%d\n", n & num);
//	printf("%d\n", n | num);
//	printf("%d\n", n ^ num);
//	printf("%d\n", ~ n);
//	return 0;
//}



//不能创建临时变量（第三个变量），实现两个整数的交换。
//1.
//#include <stdio.h>
//int main()
//{
//	int a = 8;
//	int b = 2;
//	printf("a=%d ", a);
//	printf("b=%d\n", b);
//	a = a + b;        //此步可能导致数据溢出
//	b = a - b;
//	a = a - b;
//	printf("a=%d ", a);
//	printf("b=%d", b);
//	return 0;
//}						

//2.
//#include <stdio.h>
//int main()
//{
//	int a = 8;
//	int b = 2;
//	printf("a=%d ", a);
//	printf("b=%d\n", b);
//	// a ^ a = 0;
//	a = a ^ b;
//	b = a ^ b;
//	a = a ^ b;
//	printf("a=%d ", a);
//	printf("b=%d", b);
//	return 0;
//}

///编写代码实现：求⼀个整数存储在内存中的⼆进制中1的个数。
//1.
//#include <stdio.h>
//int main()
//{
//	int count = 0;
//	int n = 0;
//	scanf("%d", &n);
//	while (n)
//	{
//		if (n % 2 ==  1)
//		{
//			count++;
//		}
//		n /= 2;
//	}
//	printf("%d ", count);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int count = 0;
//	int n = 0;
//	scanf("%d", &n);
//	for (int i = 0; i < 32; i++)
//	{
//		if (n & (1 << i))
//		{
//			count++;
//		}
//	}
//	printf("%d ", count);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int num = 0;
//	int count = 0;
//	scanf("%d", &num);
//	while (num)
//	{
//		num = num & (num - 1);
//		count++;
//	}
//	printf("%d ", count);
//	return 0;
//}


//编写代码将13⼆进制序列的第5位修改为1，然后再改回0
//#include <stdio.h>
//int main()
//{
//	int n = 13;
//	n = n | (1 << 4);
//	printf("%d\n" ,n);
//	n = n & ~(1 << 4);
//	printf("%d\n", n);
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	int a = 1;
//	int b = 2;
//	int c = (a > b, a = b + 10, a, b = a + 1);
//	printf("%d", c);
//	return 0;
//}

//#include <stdio.h>
//#include <string.h>
//struct Stu
//{
//	char name[15];//名字 
//	int age; //年龄 
//};
//void print_stu(struct Stu s)
//{
//	printf("%s %d\n", s.name, s.age);
//}
//void set_stu(struct Stu* ps)
//{
//	strcpy(ps->name, "李四");
//	ps->age = 28;
//}
//int main()
//{
//	struct Stu s = { "张三", 20 };
//	print_stu(s);
//	set_stu(&s);
//	print_stu(s);
//	return 0;
//}
